//
//  UIButtonOC.m
//  Study-code
//
//  Created by quanhao huang on 2021/11/15.
//

#import "UIButtonOC.h"

/**
 UIButton在iOS中是按钮，一般用于做用户交互，由于美观性一般的按钮我们都是使用的自定义按钮
 按钮是一个很复杂的控件，它有多种状态以及交互方式，比如按钮按下，按钮拖拽，按钮触摸，触摸后抬起，以及按钮普通的样子，按下的样子，抬起的样子
 
 总结：按钮一般分为三个状态 普通 按下 选中， 英文对应normal highlighted selected，三种状态的文字图片以及文字颜色都可以各不相同
 */

@implementation UIButtonOC

- (void)createUI {
    //新建一个按钮(custom的意思就是自定义，因为美观问题一般都不适用系统按钮而是自定义按钮)
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    //设置位置
    button.frame = CGRectMake(0, 0, 100, 100);
    //设置按钮各个属性的状态
    [button setImage:[UIImage imageNamed:@"普通图片"]forState:UIControlStateNormal];//普通状态下的按钮
    [button setImage:[UIImage imageNamed:@"高亮图片"]forState:UIControlStateHighlighted];//高亮状态的图片，按钮按下时就是高亮状态
    [button setImage:[UIImage imageNamed:@"选中后图片"]forState:UIControlStateSelected];//按钮如果被选中，就显示这个图片
    [button setTitle:@"普通文字" forState:UIControlStateNormal];//普通状态下的文字
    [button setTitle:@"高亮文字" forState:UIControlStateHighlighted];//高亮状态下的文字
    [button setTitle:@"选中文字" forState:UIControlStateSelected];//选中状态下的文字
    [button setTitleColor:UIColor.redColor forState:UIControlStateNormal];//普通状态下的文字颜色
    [button setTitleColor:UIColor.yellowColor forState:UIControlStateHighlighted];//高亮状态下的文字颜色
    [button setTitleColor:UIColor.blueColor forState:UIControlStateSelected];//选中状态下的文字颜色
    //按钮如何被选中呢？
    button.selected = YES;//这样就是选中了，当然了，NO就不是选中了
    //按钮是否被允许点击(为什么会有这种方法呢，因为有些需求下按钮虽然在那里但是并不允许用户去点击，比如密码跟账号没有输入完成前，不允许用户点击按钮，这个时候按钮的enable就可以为NO，这种情况下按钮只可以看到，但是却不能点击)
    button.enabled = YES;
    //按钮方法(注意看后边的touchUpInside，这是一个枚举，代表了交互方式touchUpInside为按下并且抬起的交互方式，按钮还有很多很多种方法触发)
    [button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
    //写两个例子
    [button addTarget:self action:@selector(buttonDown) forControlEvents:UIControlEventTouchDown];
    [button addTarget:self action:@selector(buttonDragEnter) forControlEvents:UIControlEventTouchDragEnter];
}

- (void)buttonClick {
    NSLog(@"按钮被点击了");
}

- (void)buttonDown {
    NSLog(@"按下按钮了");
}

- (void)buttonDragEnter {
    NSLog(@"手指滑到了按钮位置");
}

@end
